package com.hw.shortlink.project.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hw.shortlink.project.common.convention.response.Result;
import com.hw.shortlink.project.common.convention.response.Results;
import com.hw.shortlink.project.dto.req.ShortLinkAccessRecordReqDto;
import com.hw.shortlink.project.dto.req.ShortLinkGroupAccessRecordReqDto;
import com.hw.shortlink.project.dto.req.ShortLinkGroupStatsReqDto;
import com.hw.shortlink.project.dto.req.ShortLinkStatsReqDto;
import com.hw.shortlink.project.dto.resp.ShortLinkAccessRecordRespDto;
import com.hw.shortlink.project.dto.resp.ShortLinkGroupAccessRecordRespDto;
import com.hw.shortlink.project.dto.resp.ShortLinkGroupStatsRespDto;
import com.hw.shortlink.project.dto.resp.ShortLinkStatsRespDto;
import com.hw.shortlink.project.service.ShortLinkStatsService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
public class ShortLinkStatsController {

    private final ShortLinkStatsService shortLinkStatsService;


    /**
     * 获取单个短链接的监控记录
     *
     * @return
     */
    @GetMapping("/api/short-link/v1/stats")
    public Result<ShortLinkStatsRespDto> getStatsForSingleUrl(@RequestBody ShortLinkStatsReqDto shortLinkStatsReqDto) {
        return Results.success(shortLinkStatsService.getStatsForSingleUrl(shortLinkStatsReqDto));
    }

    /**
     * 获取某个分组的总的监控记录
     *
     * @return
     */
    @GetMapping("/api/short-link/v1/stats/group")
    public Result<ShortLinkGroupStatsRespDto> getStatsForGroup(@RequestBody ShortLinkGroupStatsReqDto shortLinkGroupStatsReqDto) {
        return Results.success(shortLinkStatsService.getStatsForGroup(shortLinkGroupStatsReqDto));
    }

    /**
     * 查询某个短链接的访问记录
     *
     * @return
     */
    @GetMapping("/api/short-link/v1/access-record")
    public Result<IPage<ShortLinkAccessRecordRespDto>> linkPageQuery(@RequestBody ShortLinkAccessRecordReqDto shortLinkAccessRecordReqDto) {
        return Results.success(shortLinkStatsService.linkPageQuery(shortLinkAccessRecordReqDto));
    }

    /**
     * 查询某个分组的访问记录
     *
     * @return
     */
    @GetMapping("/api/short-link/v1/access-record/group")
    public Result<IPage<ShortLinkGroupAccessRecordRespDto>> groupPageQuery(@RequestBody ShortLinkGroupAccessRecordReqDto shortLinkGroupAccessRecordReqDto) {
        return Results.success(shortLinkStatsService.groupPageQuery(shortLinkGroupAccessRecordReqDto));
    }




}
